/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package labcontrole;

import java.util.Random;

/**
 *
 * @author victor
 */
public class Sinal {

    private String tipo;
    private double amplitude;
    private double periodo;

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public void setAmplitude(double amplitude) {
        this.amplitude = amplitude;
    }

    public void setPeriodo(double periodo) {
        this.periodo = periodo;
    }

    /**
     * Recebe um valor de tempo e retorna o valor correspondente para o sinal escolhido
     * @param tempo
     * @return f(tempo)
     */
    public double getValor(double tempo) {

        if (tipo.equals("Seno")) {
            return amplitude * Math.sin((2 * Math.PI * tempo) / periodo);
        } else if (tipo.equals("Cosseno")) {
            return amplitude * Math.cos((2 * Math.PI * tempo) / periodo);
        } else if (tipo.equals("Degrau")) {
            return amplitude;
        } else if (tipo.equals("Dente de Serra")) {
            return (amplitude * tempo) % periodo;
        } else if (tipo.equals("Onda Quadrada")) {
            if (tempo % periodo < ((periodo / 2))) {
                return 0;
            } else {
                return amplitude;
            }
        } else if (tipo.equals("Sinal aleatório")) {
            return amplitude * new Random().nextDouble();
        }
        return 0;
    }
}
